/**
 * Electron App 事件枚举
 * 包含所有可用的 app 对象事件
 */
export enum ElectronAppEvents {
  // ==================== 应用生命周期事件 ====================

  /** 应用完成基本启动时触发（Windows/Linux 与 ready 相同，macOS 表示 applicationWillFinishLaunching） */
  WILL_FINISH_LAUNCHING = 'will-finish-launching',

  /** Electron 初始化完成时触发（只触发一次） */
  READY = 'ready',

  /** 应用开始关闭窗口前触发，可通过 event.preventDefault() 阻止退出 */
  BEFORE_QUIT = 'before-quit',

  /** 所有窗口关闭且应用即将退出时触发，可通过 event.preventDefault() 阻止退出 */
  WILL_QUIT = 'will-quit',

  /** 应用退出时触发 */
  QUIT = 'quit',

  /** 所有窗口关闭时触发，如果不订阅此事件，默认行为是退出应用 */
  WINDOW_ALL_CLOSED = 'window-all-closed',

  // ==================== 窗口相关事件 ====================

  /** 浏览器窗口失去焦点时触发 */
  BROWSER_WINDOW_BLUR = 'browser-window-blur',

  /** 浏览器窗口获得焦点时触发 */
  BROWSER_WINDOW_FOCUS = 'browser-window-focus',

  /** 新建浏览器窗口时触发 */
  BROWSER_WINDOW_CREATED = 'browser-window-created',

  /** 新建 webContents 时触发 */
  WEB_CONTENTS_CREATED = 'web-contents-created',

  // ==================== macOS 特有事件 ====================

  /** 应用被激活时触发（如点击 Dock 图标、重新启动应用等） */
  ACTIVATE = 'activate',

  /** 应用变为活跃状态时触发（每次应用变为活跃都会触发，不仅仅是点击 Dock 图标） */
  DID_BECOME_ACTIVE = 'did-become-active',

  /** 应用失去活跃状态时触发（如切换到其他应用） */
  DID_RESIGN_ACTIVE = 'did-resign-active',

  /** 用户想用应用打开文件时触发（macOS） */
  OPEN_FILE = 'open-file',

  /** 用户想用应用打开 URL 时触发（macOS） */
  OPEN_URL = 'open-url',

  /** 点击原生新标签按钮时触发（macOS） */
  NEW_WINDOW_FOR_TAB = 'new-window-for-tab',

  // ==================== Handoff 相关事件（macOS） ====================

  /** Handoff 活动要从其他设备恢复时触发 */
  CONTINUE_ACTIVITY = 'continue-activity',

  /** Handoff 活动恢复前触发 */
  WILL_CONTINUE_ACTIVITY = 'will-continue-activity',

  /** Handoff 活动恢复失败时触发 */
  CONTINUE_ACTIVITY_ERROR = 'continue-activity-error',

  /** Handoff 活动成功恢复到其他设备后触发 */
  ACTIVITY_WAS_CONTINUED = 'activity-was-continued',

  /** Handoff 即将在其他设备恢复时触发，可更新要传输的状态 */
  UPDATE_ACTIVITY_STATE = 'update-activity-state',

  // ==================== 安全相关事件 ====================

  /** 证书验证失败时触发，可通过 event.preventDefault() 和 callback(true) 信任证书 */
  CERTIFICATE_ERROR = 'certificate-error',

  /** 请求客户端证书时触发 */
  SELECT_CLIENT_CERTIFICATE = 'select-client-certificate',

  /** 需要基本认证时触发（webContents 或 Utility 进程） */
  LOGIN = 'login',

  // ==================== 进程相关事件 ====================

  /** 渲染进程意外消失时触发（通常是崩溃或被杀死） */
  RENDER_PROCESS_GONE = 'render-process-gone',

  /** 子进程意外消失时触发（通常是崩溃或被杀死） */
  CHILD_PROCESS_GONE = 'child-process-gone',

  /** GPU 信息更新时触发 */
  GPU_INFO_UPDATE = 'gpu-info-update',

  // ==================== 其他事件 ====================

  /** 辅助功能支持状态改变时触发（macOS/Windows） */
  ACCESSIBILITY_SUPPORT_CHANGED = 'accessibility-support-changed',

  /** 创建新 session 时触发 */
  SESSION_CREATED = 'session-created',

  /** 第二个实例启动时触发（使用 app.requestSingleInstanceLock() 的单例应用） */
  SECOND_INSTANCE = 'second-instance'
}
